A portion of this document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by any one of this document, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.
The invention relates generally to a memory protection scheme for use in a distributed computer system.
In many prior network architectures, the operating system (OS) virtualizes network hardware into a set of logical communication endpoints and multiplexes access to the hardware among these endpoints. The operating system may also implement protocols that make communication between connected endpoints reliable (e.g., transmission control protocol, TCP). While this model permits a simple hardware-to-operating system interface, all communication operations require a call or trap into the operating system kernel. This can be an expensive operation in terms of time and computational resources.
By way of example, consider the message passing method outlined in FIG. 1. First, the OS receives a request to send a message (data) and a virtual address that specifies the location of the data associated with the message (step 100). The OS copies the message into a message buffer (step 102) and translates the virtual address (step 104). The OS then notifies a device, such as a direct memory access (DMA) controller, that a memory move operation is needed (step 106). The DMA controller completes message delivery by copying the data from the OS""s buffer memory to the target device""s memory (step 108).
This approach to interprocess communication generally requires that memory pages used to store messages be locked down and that their virtual addresses be translated into physical addresses before a network adapter can access them (e.g., for transfer to/from a remote process). When the transfer is complete, the pages are unlocked. Traditional network transport techniques perform these steps on every data transfer request, contributing significantly to the overhead associated with data transfer operations. It would be beneficial to provide a method that is more efficient than these prior methods while also providing mechanisms to ensure that process memory is protected during data transfer operations.
In one embodiment the invention provides an interprocess communication technique that transfers a message from a first process"" memory (on a first computer system) directly to a second process"" memory (on a second computer system). The message need not be stored in intermediary memory, such as operating system buffer memory, during the transfer. The communication technique may also provide virtual to physical address translation and memory protection.
In another embodiment, the invention provides a translation and protection table (TPT) for use by a virtual interface architecture network interface controller. The TPT is used to translate virtual addresses to physical address and also to provide memory protection tags to enforce memory protection.
Methods in accordance with the invention may be stored in any media that is readable and executable by a computer system.